package _12_proxy_pattern.v_dynamic_proxy.dynamic_common;

import _12_proxy_pattern.v_dynamic_proxy.dynamic_common.advice.BeforeAdvice;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * @Description: 动态代理类
 * @Auther: 2019/6/19 18:29 by zhang.jy
 */
public class DynamicProxy<T> {
	public static <T> T newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) {
		//寻找JoinPoint连接点，AOP框架使用元数据定义
		if (true) {
			//执行一个前置通知
			(new BeforeAdvice()).exec();
		}
		//执行目标，并返回结果
		return (T) Proxy.newProxyInstance(loader, interfaces, h);
	}
}